Copyright(C) 1994 Terumasa KODAKA , Takeshi KONO ■グラフィックBIOS[ノーマル] グラフィックBIOSの概要 ノーマルモードでは、グラフィック描画を行うためのグラフィックBIOSと グラフLIOをROM内プログラムが用意している。 グラフィックBIOSは、標準グラフィックスモードのモノクロと8色カラーに 対応している。主にグラフィックGDCで描画を行う機能を含んでいる。 グラフLIOは、標準グラフィックスモードのモノクロ・8色カラー・ 16色カラーに対応して、グラフィックBIOSよりも複雑な描画機能をサポート している。 拡張グラフィックスモードやH98 256色モードは、グラフィックBIOS・ グラフLIOではサポートしていない。 グラフィックBIOS・グラフLIOは、テクニカルデータブックに詳細な説明が ある。 本書ではグラフィックBIOSは最低限の解説にとどめ、グラフLIOは割愛 した。ただし、グラフィックBIOSの中の非公開情報や注意点などがある 一部のファンクションについては詳しく触れた。 表 [PC-9800 ノーマルモードのグラフィックモード] ノーマル---+---標準グラフィックス---+---モノクロ-----+---640x200ドット* | | ^---640x400ドット | +---8色カラー----+---640x200ドット* | | ^---640x400ドット | +---16色カラー---+---640x200ドット* | ^---640x400ドット +---拡張グラフィックス(256色)-------------+---640x400ドット | ^---640x480ドット +---H98 256色-----------------------------+---640x200ドット ^---640x400ドット *印のモードのみ、標準ディスプレイ(CRT解像度=640x200,水平走査周波数= 15.98kHz,垂直同期周波数=61.47HzのPC-8001用ディスプレイ)で表示可能 ・「標準グラフィックス」は、PC-9800ノーマルモードで必須サポートの グラフィックシステム。 ただし、PC-9801初代・E・F・Mは16色カラーの機能がない。 PC-9801U・VM2・VFは16色機能用VRAMがオプション。 ・「拡張グラフィックス」は、PC-9821(Bf・Bp・Bs・Be・Tsを除く)でサポート。 ・「H98 256色」は、PC-H98 + PC-H98-E02(256色ボード)でサポート (PC-H98 model80・90・105, PC-H98T model2Cは256色ボードを標準実装)。 ・PC-98GSの「GS拡張グラフィックス」は、「標準グラフィックス」と共存 可能な独立したグラフィックシステムなので、ここには含めない。 INT 18h - Function 40h 分類 GRAPH BIOS 名前 グラフィック画面の表示開始 対象 ノーマル 入力 AH=40h 出力 なし 解説 o グラフィック画面の表示をONにする。起動時は表示OFF。 o 拡張グラフィックスモード、PC-H98 256色モードでも有効。 u このファンクションは、次のVSYNC発生を待って実際の処理を実行 する。VSYNCの発生タイミングを知るために、GDCステータス(I/O 00A0h)を チェックしている。このため、INT 18h - Function 0Ahなどのように 他ルーチンが利用中のVSYNC割り込みが停止することはない。 関連 0000:054Ch bit 7 INT 18h - Function 41h INT 18h - Function 41h 分類 GRAPH BIOS 名前 グラフィック画面の表示停止 対象 ノーマル 入力 AH=41h 出力 なし 解説 o グラフィック画面の表示をOFFにする。 o 拡張グラフィックスモード、PC-H98 256色モードでも有効。 関連 0000:054Ch bit 7 INT 18h - Function 40h INT 18h - Function 42h 分類 GRAPH BIOS 名前 表示領域の設定 対象 ノーマル + 標準グラフィックスモード 入力 AH=42h CH=モード設定情報 bit 7,6:VRAM領域(解像度)指定 -------+--------------------+------------------ 値 |グラフィック解像度 |備考 -------+--------------------+------------------ 11b |640x400 | 10b |640x200(LOWER) | 01b |640x200(UPPER) |起動時設定 -------+--------------------+------------------ bit 5:カラー/モノクロ指定 -------+------------ 値 |内容 -------+------------ 1 |モノクロ 0 |カラー -------+------------ bit 4:表示バンク -------+------------+------------------------------ 値 |内容 |備考 -------+------------+------------------------------ 1 |バンク1 |PC-9801初代・Uでは指定不可 0 |バンク0 | -------+------------+------------------------------ bit 3〜0:0000bを設定する(未使用) 出力 なし 解説 o 標準グラフィックスモードのグラフィックモードを設定する。 u 拡張グラフィックスモードで実行した場合の動作は、以下のようになる。 ・ディスプレイ周波数 …変化なし ・色数 640x400設定時…変化なし(拡張グラフィックスモードのまま) 640x200設定時…16色モード ただし、PC-9821初代・Neで、拡張グラフィックスモードの640x480ドット時に このファンクションを実行したときは無動作になる。内部で水平走査周波数が 31kHzのまま、解像度を640x400ドットに設定しようとして、エラーになるため である。 u PC-9821(Tsを除く)では、システム共通域0000:0597h bit 1,0にグラフィック 解像度が保存される。そのほかの機種では、このファンクションの設定内容は システム共通域に保存されない。 関連 0000:0597h bit 1,0 INT 18h - Function 43h 分類 GRAPH BIOS 名前 パレットレジスタの設定 対象 ノーマル + 標準グラフィックスモード + モノクロ・8色カラー 入力 AH=43h DS:BX=UCWの先頭アドレス <UCWのGBCPC(オフセット04h,サイズ4バイト)の内容> --------+---------+------------------------------- アドレス|ビット |内容 --------+---------+------------------------------- DS:BX+4 |bit 7〜4 |パレットレジスタ6 |bit 3〜0 |パレットレジスタ7 --------+---------+------------------------------- DS:BX+5 |bit 7〜4 |パレットレジスタ4 |bit 3〜0 |パレットレジスタ5 --------+---------+------------------------------- DS:BX+6 |bit 7〜4 |パレットレジスタ2 |bit 3〜0 |パレットレジスタ3 --------+---------+------------------------------- DS:BX+7 |bit 7〜4 |パレットレジスタ0 |bit 3〜0 |パレットレジスタ1 --------+---------+------------------------------- 各パレットレジスタのビット割り当て --------+------------ ビット |内容 --------+------------ bit 7,3 |0を設定 bit 6,2 |G bit 5,1 |R bit 4,0 |B --------+------------ 出力 なし 解説 o 8色カラーモードのカラーパレットの設定、およびモノクロモードの 表示画面の合成方法の指定を行う。 o グラフィックBIOSでは16色モードのパレット指定はできない。 関連 I/O 00A8h I/O 00AAh I/O 00ACh I/O 00AEh INT 18h - Function 44h 分類 GRAPH BIOS 名前 ボーダーカラーの設定 対象 ノーマル + 標準ディスプレイ 入力 AH=44h DS:BX=UCWの先頭アドレス <UCWのGBBCC(オフセット01h,サイズ1バイト)の内容> --------+---------+------------------------------- アドレス|ビット |ボーダーカラーの色 --------+---------+------------------------------- DS:BX+1 |bit 7 |0を設定 |bit 6 |GREEN |bit 5 |RED |bit 4 |BLUE |bit 3〜0 |0000bを設定 --------+---------+------------------------------- 出力 なし 解説 o 標準ディスプレイ使用時のボーダーカラーを設定する。 u 水平走査周波数24kHzのときは、ディスプレイの描画可能領域の周囲に 色がつく。本来のボーダーカラーのようにディスプレイの外周まで 完全に色がつくわけではない。また、一部のモニタ(SONY GVM-1411など)では 水平走査周波数24kHzのときボーダーカラーを指定すると表示色が異常になる。 関連 I/O 006Ch INT 18h - Function 45h 分類 GRAPH BIOS 名前 ドットの書き込み 対象 ノーマル + 標準グラフィックスモード + モノクロ・8色カラー 入力 AH=45h CH=画面の指定 bit 7,6:VRAM領域指定 -------+------------------ 値 |グラフィック解像度 -------+------------------ 10b |640x400 01b |640x200(UPPER) 00b |640x200(LOWER) -------+------------------ bit 5,4:描画プレーン -------+------------ 値 |内容 -------+------------ 11b |プレーン1,2,3 10b |プレーン3 01b |プレーン2 00b |プレーン1 -------+------------ bit 3〜0:0000bを設定する(未使用) ES=描画パターンバッファのセグメントアドレス DS:BX=UCWの先頭アドレス 出力 なし 解説 o 指定された画面に対して、ある長さのドットパターンの書き込みを行う。 o UCWの詳細はテクニカルデータブックBIOS編参照。 関連 INT 18h - Function 46h 分類 GRAPH BIOS 名前 ドットの読み出し 対象 ノーマル + 標準グラフィックスモード + モノクロ・8色カラー 入力 AH=46h CH=画面の指定(INT 18h - Function 45hと同じ) ES=読み込みバッファ(1〜3)のセグメントアドレス DS:BX=UCWの先頭アドレス 出力 なし 解説 o 指定された画面から、ある長さのドットパターンの読み出しを行う。 o UCWの詳細はテクニカルデータブックBIOS編参照。 関連 INT 18h - Function 47h 分類 GRAPH BIOS 名前 直線,矩形の描画 対象 ノーマル + 標準グラフィックスモード + モノクロ・8色カラー 入力 AH=47h CH=画面の指定(INT 18h - Function 45hと同じ) DS:BX=UCWの先頭アドレス 出力 なし 解説 o 指定された画面に対して、直線または矩形の書き込みを行う。 GDCで描画する。 o UCWの詳細はテクニカルデータブックBIOS編参照。 関連 INT 18h - Function 48h 分類 GRAPH BIOS 名前 円弧の描画 対象 ノーマル + 標準グラフィックスモード + モノクロ・8色カラー 入力 AH=48h CH=画面の指定(INT 18h - Function 45hと同じ) DS:BX=UCWの先頭アドレス 出力 なし 解説 o 指定された画面に対して、円弧の書き込みを行う。 GDCで描画するため、楕円の一部となるような円弧を描くことはできない。 o UCWの詳細はテクニカルデータブックBIOS編参照。 関連 INT 18h - Function 49h 分類 GRAPH BIOS 名前 グラフィック文字の描画 対象 ノーマル + 標準グラフィックスモード + モノクロ・8色カラー 入力 AH=49h CH=描画画面の指定(INT 18h - Function 45hと同じ) DS:BX=UCWの先頭アドレス 出力 なし 解説 o 指定された画面に対して、8×8ドット以下のパターンを書き込む。 8×8ドットよりも大きな領域を、8×8ドット以下のくり返しパターンで 塗り潰すこともできる。 o UCWの詳細はテクニカルデータブックBIOS編参照。 関連 INT 18h - Function 4Ah 分類 GRAPH BIOS 名前 描画モードの設定 対象 ノーマル + 標準グラフィックスモード 入力 AH=4Ah CH=描画タイミングの設定 16h=フラッシュレス描画 06h=フラッシュ描画 出力 なし 解説 o グラフィックGDCに対して、描画タイミングの指定を行う。 PC-9801初代・E・F・M・U・VM2・VFでは、フラッシュ描画に設定すると、 GDCで描画するときチラツキが出る。フラッシュレス描画では、 ブランキング期間のみ描画を行うため、チラツキは出ない。 CPUで描画するときには、フラッシュ描画でもチラツキは起らない。 u システム共通域0000:054Dh bit 3に描画タイミングの設定状態が保存される。 u 0000:054Dh bit 4=1の機種(PC-9801初代・E・F・M・U・VM2・VF以外)では、 このファンクションによる設定にかかわらず、常にフラッシュレス描画と 同等の動作をする。 u 0000:054Ch bit 0=1(DIP SW 1-8=ON:拡張グラフィックモード)の場合、 なにも処理を行わない。拡張グラフィックモードのときは、ITFでGDCを 必ずフラッシュ描画モードに設定するため。 o CHの値は、グラフィックGDCにSYNCコマンドを送出する際の 第1パラメータの値そのものである。このため、06h,16h以外の値を 指定してはならない。 関連 0000:054Dh bit 4,3 INT 18h - Function 4Dh 分類 GRAPH BIOS 名前 400ライン時拡張/標準グラフィックスモード選択 Undocumented 対象 PC-9821(Bf・Bp・Bs・Be・Tsを除く) + ノーマル 入力 AH=4Dh CH=グラフィックスモード 00h=標準グラフィックス(2/8/16色)モード 01h=拡張グラフィックス(256色)モード 出力 なし 解説 o グラフィック解像度640x400表示時の、標準/拡張グラフィックスモードの 選択を行う。 グラフィック解像度640x400表示モードのときのみ有効。その他の グラフィック解像度ではなにもせずに終了する。 u システム共通域0000:054Dh bit 7が現在のグラフィックスモードを示して いる。この状態を読み出すBIOSファンクションは存在しない。現在のモードを 読み出す必要があるときは、システム共通域を直接参照する。 u PC-9821初代では、400ライン以外のときに本ファンクションを実行すると、 0000:054Dh bit 2(現在のGDCクロック状態を示すフラグ)が必ず1 (5MHz状態)に設定されてしまう。 PC-9821初代・Af・Ap・As・Ae・Ceで、CH=00h,01h以外の値を指定して実行した ときも同様の状態になる。 PC-9821Ap2・As2・Cs2・Ce2で、400ラインのときCH=00hで実行したときも 同様の状態になる。 o PC-98GS, PC-9821Bf・Bp・Bs・Be・Tsは本ファンクションをサポートしない。 関連 INT 18h - Function 30h 0000:054Dh bit 7 INT 18h - Function 4Bh,4Ch,4Eh,4Fh 分類 GRAPH BIOS 名前 機能なし 対象 ノーマル 入力 AH=4Bh,4Ch,4Eh,4Fh 出力 なし 解説 o 関連 INT 18h - Function 50〜FFh 分類 GRAPH BIOS 名前 実行禁止 Undocumented 対象 ノーマル 入力 AH=50〜FFh 出力 解説 o AHの範囲チェックなしにディスパッチするため、実行すると暴走する。 関連